//#include "main.h"

//unsigned char  gired_data[4];   //地址码+地址反码+控制码+控制反码

//unsigned char code gired_num[12]={25,69,70,71,68,64,67,7,21,9,28,22};
////unsigned char idata gired_num[12]={19,45,46,47,44,40,43,7,15,9,28,16};
////0-9;10=ok;11=*

//void ired_init(void)    
//{
//	IT0=1;	//下降沿触发
//	EX0=1;	//打开中断0允许
//	EA=1;	//打开总中断
//	IRED=1;	//初始化端口
//}

///**
// * 获取红外码值对应的编号
// * 
// * @param 无
// * @return unsigned char 返回红外码值对应的编号，如果未找到则返回103
// */
//unsigned char get_irnum()
//{
//	unsigned char i=0;
//	// 如果第三个字节为0，则返回103
//	if(gired_data[2]==0)
//      return 103;
//      
//	// 遍历gired_num数组，查找匹配的码值
//	for(i=0;i<12;i++)
//    {
//		if(gired_data[2]==gired_num[i])return i;
//	}
//	// 如果未找到匹配的码值，则返回第三个字节的值
//	return gired_data[2];
//}



//void ired() interrupt 0	//外部中断0服务函数
//{
//    unsigned char ired_high_time = 0;
//    unsigned short time_cnt = 0;
//    unsigned char i = 0, j = 0;

//    if (IRED == 0)
//    {
//        // P12 = ~P12;
//        time_cnt = 100;
//        
//        while ((!IRED) && (time_cnt)) // 等待引导信号9ms低电平结束，若超过10ms强制退出
//        {
//            delay_10us(1); // 延时约10us
//            time_cnt--;
//            if (time_cnt == 0)
//                return;
//        }

//        if (IRED) // 引导信号9ms低电平已过，进入4.5ms高电平
//        {
//            time_cnt = 50;
//            while (IRED && time_cnt) // 等待引导信号4.5ms高电平结束，若超过5ms强制退出
//            {
//                delay_10us(1);
//                time_cnt--;
//                if (time_cnt == 0)
//                    return;
//            }

//            for (i = 0; i < 4; i++) // 循环4次，读取4个字节数据
//            {
//                for (j = 0; j < 8; j++) // 循环8次读取每位数据即一个字节
//                {
//                    time_cnt = 7;
//                    while ((IRED == 0) && time_cnt) // 等待数据1或0前面的0.56ms结束，若超过0.6ms强制退出
//                    {
//                        delay_10us(1);
//                        time_cnt--;

//                        if (time_cnt == 0)
//                        {
//                            return;
//                        }
//                         P10 = 0;
//                    }

//                    time_cnt = 20;
//                    while (IRED) // 等待数据1或0后面的高电平结束，若超过2ms强制退出
//                    {
//                        delay_10us(1); // 约0.1ms
//                        ired_high_time++;
//                        if (ired_high_time > 20)
//                        {
//                            return;
//                        }
//                        P12 = 1;
//                    }
//                    // P12 = ~P12;
//                    gired_data[i] >>= 1; // 先读取的为低位，然后是高位
//                    if (ired_high_time >= 8)
//                    {
//                        gired_data[i] |= 0x80;
//                    } // 如果高电平时间大于0.8ms，数据则为1，否则为0
//                    ired_high_time = 0; // 重新清零，等待下一次计算时间
//                }
//            }
//           P55 = 1;
//        }

//        if (gired_data[2]!= ~gired_data[3]) // 校验控制码与反码，错误则返回
//        {
//            P12 = 0;
//            for (i = 0; i < 4; i++)
//                gired_data[i] = 0;
//            return;
//        }
//    }
//}




//void delay_10us(unsigned int ten_us)
//{
//	unsigned char  i, j;

//	while(ten_us--){
//		_nop_();
//	_nop_();
//	i = 2;
//	j = 15;
//	do
//	{
//		while (--j);
//	} while (--i);

//	};	
//}
